package com.ruoyi.common.payment;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * @ClassName SanjinOrderReq
 * @Description TODO
 * @Author zz
 * @Date 2024/1/15
 **/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SanjinOrderReq implements Serializable {
    // 【版本号】默认1.0
    @JsonProperty("version")
    private String version;

    // 【商户编号】商户后台获取
    @JsonProperty("customerid")
    private int customerId;

    // 【商户订单号】必须确保唯一性
    @JsonProperty("sdorderno")
    private String sdOrderNo;

    // 【订单金额】单位元。保留两位小数，不足以0占位。且不能出现千位分隔符
    @JsonProperty("total_fee")
    private BigDecimal totalFee;

    // 【支付编号】详见附录1，收银台接入时如果该参数为空、则由用户选择支付方式，否则为固定支付方式
    @JsonProperty("paytype")
    private String payType;

    // 【银行编号】详见附录2
    @JsonProperty("bankcode")
    private String bankCode;

    // 【接入方式】API接入：API 收银台接入：CHECKOUT
    @JsonProperty("access_type")
    private String accessType;

    // 【异步通知URL】不能带有任何参数，且必须是可正常访问的url
    @JsonProperty("notifyurl")
    private String notifyUrl;

    // 【同步通知URL】不能带有任何参数，且必须是可正常访问的url
    @JsonProperty("returnurl")
    private String returnUrl;

    // 【clientip】终端ip，建议获取用户ip
    @JsonProperty("clientip")
    private String clientIp;

    // 【订单备注】建议传递商品名称！
    @JsonProperty("remark")
    private String remark;

    // 【付款人姓名】支付宝实名制需要用到，微信可以随意传内容！
    @JsonProperty("name")
    private String name;

    // 【付款人身份证号码】支付宝实名制需要用到，微信可以随意传内容！
    @JsonProperty("cert_no")
    private String certNo;

    // 【收银台自动跳转】收银台接入时，该字段如果为 true 请求成功直接跳转失败返回错误消息、为 false 则返回参数有由客户端自行判断跳转。为空时不传递、默认值为 true。表单请求可忽略
    @JsonProperty("is_jump")
    private boolean isJump;

    // 【md5签名】参照下方md5签名说明
    @JsonProperty("sign")
    private String sign;
}
